from time import sleep

import logging
import pytest
from appium.webdriver.common.mobileby import MobileBy

from HomeWork_PO_Apptest_add_and_delete_members.base.base_page import BasePage
from HomeWork_PO_Apptest_add_and_delete_members.page.memberinfo_page import MemberInfoPage


class SearchMemberPage(BasePage):
    def search_member(self,name):
        # 定位搜索输入框，点击并输入内容
        self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tencent.wework:id/hl7")').send_keys(name)
        print(name)
        sleep(2)

        # 搜索联系人，分两种情况：有搜索结果和无搜索结果
        # 第一种：无搜索结果：如果界面上提示无搜索结果，视测试用例为：伪失败
        if "无搜索结果" in self.driver.page_source:
            pytest.xfail(f"无搜索结果")
            logging.info(f"删除联系人之前，搜索出来的联系人个数为：0")
        # 第二种：有搜索结果:删除前判断联系人个数，删除后判断联系人个数，验证：删除后个数比删除前个数少1
        else:

            # 定位联系人个数：根据页面结构，“联系人”与每一个搜索结果是兄弟关系，即“联系人”有多少个兄弟结点
            elements = self.driver.find_elements(MobileBy.XPATH, "//*[@text='联系人']/../following-sibling::*")
            num = len(elements)
            print(f"删除联系人之前，搜索出来的联系人个数为：{num}")
            logging.info(f"删除联系人之前，搜索出来的联系人个数为：{num}")

        return self

    def click_first_search_name(self):
        # 选择搜索结果的第一个联系人,跳转到 个人信息页,同时传递driver
        self.driver.find_elements(MobileBy.XPATH, "//*[@text='联系人']/../following-sibling::*")[0].click()

        return MemberInfoPage(self.driver)


    def count_search_num(self):
        # 搜索联系人，分两种情况：有搜索结果和无搜索结果
        # 第一种：无搜索结果：如果界面上提示无搜索结果，视测试用例为：伪失败
        if "无搜索结果" in self.driver.page_source:
            pytest.xfail(f"无搜索结果")
            logging.info(f"删除联系人之前，搜索出来的联系人个数为：0")
        # 第二种：有搜索结果:删除前判断联系人个数，删除后判断联系人个数，验证：删除后个数比删除前个数少1
        else:

            # 定位联系人个数：根据页面结构，“联系人”与每一个搜索结果是兄弟关系，即“联系人”有多少个兄弟结点
            elements = self.driver.find_elements(MobileBy.XPATH, "//*[@text='联系人']/../following-sibling::*")
            num = len(elements)
            print(f"删除联系人之前，搜索出来的联系人个数为：{num}")
            logging.info(f"删除联系人之前，搜索出来的联系人个数为：{num}")


